Method and apparatus for extendible information aggregationand presentation

ABSTRACT

Methods and apparatus for arbitrarily extendible information aggregation and display. This functionality is achieved by abstracting the components of the system into individual modules which communicate using a platform-independent, extendible markup language such as extensible markup language (XML). A designer adds support for new information sources or client devices by abstracting and encapsulating messages to and from the information source or client device in a wrapper using a platform-independent, extendible markup language such as XML.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of co-pending U.S. application Ser.No. 09/891,821 filed on Jun. 26, 2001.

FIELD OF THE INVENTION

The present invention relates to methods and apparatus for theaggregation of information from multiple sources for presentation to anend user. In particular, the present invention relates to abstractedinformation aggregation and presentation utilizing extendible markuplanguages such as extensible markup language (XML).

BACKGROUND OF THE INVENTION

The closing decades of the 20th century have been characterized as thebeginning of an “Information Age.” Before the widespread deployment ofcomputers in the 1970s and 1980s, records and other data were stored inanalog, human-readable formats using paper records, microfiche, andmicrofilm. With computerization, the storage of data became a digitaltask, storing information on magnetic or optical media incomputer-readable formats. Unfortunately, computerization precededwidespread internetworking by roughly twenty years. The result is adizzying array of data sources often separated by geographical or legalboundaries, stored in potentially incompatible formats, and held byowners whose interests may argue against interoperability and easyaccess.

However, end users need and want simple access to information from allof these data sources. This need has driven the creation of varioustechniques enabling a single end user to access and work withinformation with multiple, disparate data sources. For example, At HomeCorporation of Redwood City, Calif. offers the MY EXCITE service. MYEXCITE presents users with a set of selectable information sourcesincluding sources for weather information, sources for equity marketinformation, and sources for news information. The user identifies oneor more information sources of interest, which the MY EXCITE serviceprovides in a convenient, single page format website that isperiodically updated. Without MY EXCITE or a comparable service, theuser needs to retrieve this information from disparate data sourcesusing varying methods of communications. For example, the user wouldneed to place a telephone call to the National Oceanic and AtmosphericAdministration (NOAA) for weather, purchase the NEW YORK TIMES and readthe financial section for equity market information, and use a radio tomonitor a news station for the latest news.

FIG. 1 depicts an apparatus for information aggregation and displayknown to the prior art, not necessarily used by the MY EXCITE service.The aggregator 108 includes functionality to accept an incoming networkconnection from the client device 100, including security measures usingauthentication credentials.

After authentication, the aggregator 108 loads preference information,including a list of conduits 112 associated with the user, frompersistent storage. Each conduit 112 is adapted to process theinformation from an information source in data tier 116 and display iton a particular type of client device 100. In one embodiment, an equitymarket information source is associated with two conduits 112: one fordisplaying information in hypertext markup language (HTML) and one fordisplaying information in wireless markup language (WML).

Assume that a designer wishes to add a new information source (e.g.,weather information) from data tier 116. This requires the creation of anew conduit 112 for each type of client device (e.g., web browser, WAPphone, etc.) supported by the aggregator 108. Similarly, if the designerwishes to add support for devices using a new display format, then thedesigner must write a conduit 112 for each information source supportedby the aggregator 108.

For a real-world system typically accessing hundreds of data sources indata tier 116 using hundreds of conduits 112, the costs of upgrading thesystem to address a new display format or incorporate a new informationsource from data tier 116 are significant.

Moreover, the conduit model only allows the simple aggregation andconveyance of data from an information source to a client device.Information provided by an information source may not be in a formappropriate for direct display on a client device 100. For example, asource of equity market information could provide earnings and pricedata in response to a ticker symbol supplied by a user of a clientdevice 100. If the user's preference data requires a price-to-earningsratio, mere presentation of price data and earnings data fails to meetthat request. Therefore, it is desirable for the system to permitarbitrary processing of the data received from an information sourcebefore its presentation to an end user.

BRIEF SUMMARY OF THE INVENTION

The present invention provides methods and apparatus for arbitrarilyextendible information aggregation and display. This functionality isachieved by abstracting the components of the system into individualmodules which communicate using a platform-independent, extendiblemarkup language such as XML. A designer adds support for new informationsources or client devices by abstracting and encapsulating messages toand from the information source or client device in a wrapper using aplatform-independent, extendible markup language such as XML.

This additional level of abstraction and common intermediate formatreduces the effort required to support a new information source orclient device. Now a designer only needs to write one conduit to supporta new information source or new client device. The common intermediateformat permits arbitrary processing of data from an arbitraryinformation source using a back-end integration server.

In one aspect, the present invention is an apparatus for the aggregationand display of information on a client device. The apparatus moduleincludes a communications module, an assimilation agent, and anintegration service. The communications module delivers information toand receives information from a client device. The assimilation agentreceives information from at least one information source andencapsulates the information in a first wrapper using aplatform-independent extendible markup language. The integration servercommunicates with the communications module and the assimilation agent.The integration server receives encapsulated information from theassimilation agent, uses a rules engine to process the encapsulatedinformation according to a predefined set of actions, and encapsulatesthe result in a second wrapper using a platform-independent extendiblemarkup language. The integration server provides the encapsulated resultto the communications module.

In one embodiment, the communications module delivers information to andreceives information from the client device using hypertext markuplanguage (HTML) or wireless markup language (WML). In anotherembodiment, the communications module delivers information customizedaccording to a predefined profile. In yet another embodiment, thecommunications module delivers information customized according to thetype of client device. In still another embodiment, the communicationsmodule, the integration server and the assimilation agent communicateusing XML. In yet another embodiment, the assimilation agent retrievesinformation from a SQL database, an Oracle database, a Domino database,a document repository, a SAP database, a computer in communications withthe Internet, or an indexed database.

In another embodiment, the apparatus also includes a content deliverybroker that provides communications between the communications moduleand the integration server. In yet another embodiment, thecommunications provided by the content delivery broker utilize XML.

In another embodiment, the apparatus also includes a receiver agent incommunication with the integration server, receiving messages sent in aprotocol. In yet another embodiment, this protocol is file transferprotocol (FTP), post office protocol, version 3 (POP3), hypertexttransfer protocol (HTTP), Microsoft Message Queue messages (MSMQ),simple mail transfer protocol (SMTP), directory polling, andcomponent-object model messages (COM).

In another embodiment, the apparatus also includes a spider agent incommunication with the integration server, initiating communicationswith a data source using a protocol. In yet another embodiment, thisprotocol is file transfer protocol (FTP), post office protocol, version3 (POP3), hypertext transfer protocol (HTTP), Microsoft Message Queuemessages (MSMQ), simple mail transfer protocol (SMTP), directorypolling, and component-object model messages (COM).

In another embodiment, the apparatus also includes a sender agent incommunication with the integration server, sending messages using aprotocol. In yet another embodiment, this protocol is file transferprotocol (FTP), post office protocol, version 3 (POP3), hypertexttransfer protocol (HTTP), Microsoft Message Queue messages (MSMQ),simple mail transfer protocol (SMTP), directory polling, andcomponent-object model messages (COM).

In another aspect, the present invention is a method for processinginformation from multiple sources for presentation to a user. Anassimilation agent receives information from at least one of severalinformation sources. The assimilation agent encapsulates the receivedinformation in a first wrapper using a platform-independent extendiblemarkup language. The assimilation agent transmits the encapsulatedinformation to an integration server. The integration server processesthe information in accord with a predefined set of rules. Theintegration server encapsulates the processed information in a secondwrapper using a platform-independent extendible markup language. Theintegration server transmits the processed information to acommunications module. The communications module delivers the processedinformation to a client device.

In one embodiment, the communications module delivers the processedinformation to a client device by identifying the type of client deviceor the type of the processed information. In another embodiment, thecommunications module additionally selects an XML style sheet based(XSL) on the type of the client device or the type of the processedinformation and completes the selected XSL using the processedinformation. In still another embodiment, the communications moduleadditionally transforms the completed XSL to a form suitable for displayon the client device and provides the transformed result to the clientdevice.

In another aspect, the present invention is an article of manufacturestoring computer-readable program means for aggregating information frommultiple sources for presentation to a user. The article of manufactureincludes computer-readable program means for receiving, by anassimilation agent, information from at least one of a set ofinformation sources, computer-readable program means for encapsulating,by the assimilation agent, the received information in a first wrapperusing a platform-independent extendible markup language, andcomputer-readable program means for transmitting, by the assimilationagent, the encapsulated information to an integration server. Thearticle of manufacture also includes computer-readable program means forprocessing, by the integration server, the encapsulated information inaccord with a predefined set of rules, computer-readable means forencapsulating, by the integration server, the processing information ina second wrapper using a platform-independent extendible markuplanguage, and computer-readable program means for transmitting, by theintegration server, the processed information to a communicationsmodule. The article of manufacture also includes computer-readableprogram means for delivering, by the communications module, theprocessed information to a client device.

In one embodiment, the computer-readable program means for delivering,by the communications module, the processed information to a clientdevice itself includes computer-readable program means for identifyingthe type of client device or the type of the processed information. Instill another embodiment, the computer-readable means for delivering, bythe communications module, the processed information to a client deviceitself also includes computer-readable program means for selecting anXSL based on the type of client device or the type of the processedinformation, and computer-readable program means for completing the XSLwith the processed information. In yet another embodiment, thecomputer-readable means for delivering, by the communications module,the processed information to a client device itself also includescomputer-readable program means for transforming the XSL to a formsuitable for display on the client device and computer-readable programmeans for providing the transformed XSL to the client device.

BRIEF DESCRIPTION OF THE DRAWINGS

These and other advantages of the invention may be more clearlyunderstood with reference to the specification and the drawings, inwhich:

FIG. 1 is a block diagram of a prior art software system for theaggregation and display of information;

FIG. 2 is a block diagram of an embodiment of a software system inaccord with the present invention;

FIG. 3 is a block diagram illustrating a typical interconnection of theportal server 216 with various information sources;

FIG. 4 is a sample display presented by the portal server 216 to an enduser using client device 100;

FIG. 5 is an exemplary workflow diagram operating in the integrationserver module 208; and

FIG. 6 is a block diagram of an embodiment of a server array executingthe software embodiment of FIG. 2 in accord with the present invention.

In the drawings, like reference characters generally refer to the sameparts throughout the different views. The drawings are not necessarilyto scale, emphasis instead being placed upon illustrating the principlesof the invention.

DETAILED DESCRIPTION OF THE INVENTION

In brief overview, Applicants' invention provides methods and apparatusfor extendible information aggregation and presentation. The presentinvention reduces the effort required to add support for new displayformats or new information sources by introducing an additional layer ofabstraction into the process of information aggregation and display. Adesigner identifies an information source she wishes to make availablein aggregation with other information sources. Working with a genericsoftware object, the designer builds an assimilation agent that providesone-way or two-way communications with the information source usingmessaging in a platform-independent extendible markup language such asXML. An integration server accepts messages encapsulating informationfrom the assimilation agent for processing. The integration serverprovides the processed messages to a communications module for displayon a client device.

Portal Server (PS)

FIG. 2 depicts an embodiment of a software system in accord with thepresent invention. The system includes a communications module 200 incommunication with various content delivery brokers (CDBs) 204 andconduits 112. CDBs 204 direct communicate with an integration server(IS) module 208, while prior art conduits 112 direct communicate with aninformation source in data tier 116, bypassing the IS module 208. The ISmodule 208 itself indirect communicates with information sources in datatier 116 through assimilation agents (AAs) 212. In the aggregate, thesemodules are conveniently referred to as the portal server (PS) 216.

The component modules of the PS 216 are typically software objectsinstantiated by a controlling process or dispatcher on an as neededbasis. For example, when a user connects to the PS 216, a dispatcherinstantiates a communications module 200 to communicate with the user'sclient device 100. Similarly, when the IS module 208 requiresinformation from an information source, the dispatcher instantiates anassimilation agent 212 to intermediate with the information source.

Because of the diversity and facility of modern programming practices,the component modules of the PS 216 take many different forms. In someembodiments, the component modules are compiled binary objects in accordwith CORBA, ActiveX, OpenDoc, or other object-oriented frameworks. Inother embodiments, the component modules are scripts written in Perl,JavaScript, VBScript, or other scripting languages that are translatedinto machine language before execution. In still other embodiments, thecomponent modules are binary executables compiled from files written inone or more programming languages including but not limited to C, C++,C#, Lisp, or Pascal.

Each component module of PS 216 provides its own specializedfunctionality. The communications module 200 communicates with clientdevices 100. The CDBs 204 provide a consistent interface forcommunications with IS module 208. Conduits 112 interface directly withexternal data sources such as a website, providing information tocommunications module 200 for display on a client device 100.Assimilation agents (AAs) 212 not only provide a consistent interfacewith internal and external data sources, but also encapsulateinformation from a data source in an platform-independent, extendiblemarkup language that renders it susceptible to automated processing byIS module 208. In some embodiments, AAs 212 also perform predefinedtasks on business objects such as data files or word processor files.The IS module 208 enables the automation of business processes,gathering information from sources including AAs 212 and processing itin accord with predefined actions and conditional rules.

Communications between the component modules in FIG. 2 utilize aplatform-neutral extendible markup language such as XML. Thesecommunications contain, either directly or indirectly (e.g., through useof embedded URLs or other locators), business objects such as documents,or remote procedure calls (RPCs) such as search requests. The contentsof a communication are typically encapsulated in markup language bydefining a message type for the communication. Message types providemetadata and routing information necessary to exchange data between aninformation source and PS 216 regardless of the individual protocolsused and supported by the information source.

In normal operation, a user with a client device 100 establishescommunications with one or more server computers executing softwareproviding the desired functionality of the PS 216. The client device 100typically interconnects with the server computers using a network 104that passes messages encoded in an agreed-upon protocol.

The client device 100 is typically an electronic device capable ofaccepting input from a user and graphically displaying data. In oneembodiment, client device 100 is a personal digital assistant (PDA). ThePDA graphically displays information which the user interacts with usinga stylus, keyboard, or other input device. In another embodiment, clientdevice 100 is a personal computer running a web browser. A browserwindow graphically displays information which the user interacts withusing a mouse, keyboard, trackball, or other input device. In otherembodiments, client device 100 is a web-aware cell phone or a thinclient program such as METAFRAME from Citrix Software, Inc. of Ft.Lauderdale, Fla.

The network 104 typically carries data using electrical signaling,optical signaling, wireless signaling, a combination thereof, or anyother signaling method known to the art. The network can be a fixedchannel telecommunications link such as a T1, T3, or 56 kb line; LAN orWAN links; a packet-switched network such as TYMNET; a packet-switchednetwork of networks such as the Internet; or any other networkconfiguration known to the art. The network typically carries data in avariety of protocols, including but not limited to: user datagramprotocol (UDP), asynchronous transfer mode (ATM), X.25, and transmissioncontrol protocol (TCP).

Once a connection is established, at least one server computer executessoftware providing the functionality of communications module 200. Thecommunications module 200 identifies the type of client device 100 anduses this information to structure its interactions with the clientdevice 100. In one embodiment, the communications module 200 identifiesthe type of client device 100 by examining metadata provided by theclient device 100 when initiating the connection. For example, when theclient device 100 is a personal computer executing a web browserprogram, it will typically provide metadata identifying the web browser,whether the browser is “Mozilla-compatible,” and some information aboutthe operating system hosting the web browser. This identificationinformation enables the communications module 200 to identify and deploythemes or style sheets that use the specific features supported by theweb browser, including non-standard features or features that varybetween browser implementations.

In another embodiment, the communications module 200 identifies the typeof client device 100 by the number of the port on which the clientdevice 100 attempts to establish a connection. If the port number is 80,the communications module 200 assumes the client device 100 supportshypertext transfer protocol (HTTP) and subsequently display usinghypertext markup language (HTML). If the port number is 9200, thecommunications module assumes the client device 100 supports wirelessaccess protocol (WAP) and subsequently displays using wireless markuplanguage (WML).

The communications module 200 typically operates by accessing storedtemplate files associated with a particular type of client device 100and merging the templates with data received from the CDBs 204 fordisplay to the client device 100. In one embodiment, these templatefiles are XML style sheets (XSLs) with tags mapping to HTML and WMLtags. Template files typically specify a display scheme appropriate forthe client device 100. For example, in one embodiment where clientdevice 100 is a personal computer running a web browser program, atemplate file may specify a table with two columns where the firstcolumn occupies 30 percent of the screen and the second column occupiesthe other 70 percent of the screen.

After identifying of the client device 100, the communications module200 invokes a security broker (not shown) to authenticate the user'sidentity. In one embodiment, the security broker directs thecommunications module 200 to prompt the user for an identifier and apassword. The user enters an identifier and password, which thecommunications module 200 provides to the security broker. The securitybroker checks the identifier and password against an internal database,file, or system registry to authenticate the user. If the identifier andpassword provided are not valid, the system denies access to the userand closes the connection to the client device 100. In otherembodiments, authentication credentials accepted by the security brokerinclude but are not limited to shared secrets, public/private keyschemes, biometric data, or other forms of authentication well known tothe art.

In another embodiment, the security broker leverages the authenticationservices provided by its operating system environment. For example, whenthe operating system is a member of the WINDOWS family of operatingsystem products from Microsoft Corporation of Redmond, Wash., thesecurity broker leverages the user, group, and domain information storedin the operating system and associated with the user.

In one embodiment the security broker is a COM object built usingcommercially-available programming tools, as described above. In anotherembodiment, the security broker supports methods including but notlimited to user login, user logout, group enumeration, user enumeration,the enumeration of users in a particular group, and the changing ofauthentication credentials.

After completing the authentication process, the communications module200 accesses personalization information associated with the user andstored in an internal database (not shown). This personalizationinformation typically includes but is not limited to: a set of CDBs 204for retrieving information from IS 208 for display to the user, a set ofconduits 112 for retrieving information directly from informationsources in data tier 116, and a set of predefined workflows for use withIS module 208, as discussed in further detail below.

Using the user's personalized settings, PS 216 proceeds to aggregateinformation for display on the user's client device 100. The systeminvokes each CDB 204 and conduit 112 associated with the user. In turn,an invoked CDB 204 or conduit 112 provides information to thecommunications module 200 for display to the end user. Some CDBs 204simply provide a dialog box or other graphical interface elements uponinvocation. Other CDBs 204 trigger one or more business flows in the ISmodule 208. Conduits 112 may directly query or poll information sourcessuch as a search engine before providing output to the communicationsmodule 200. The source code for an exemplary conduit 112 that reads alist of stock symbols and displays related data from CNBC follows://Implementation of the ISequoiaConfig interface STDMETHODIMPCMyAgent::Configure(BSTR configSpace, BSTR configName, VARIANT config,VARIANT_BOOL* pErrorCode) {     // get the necessary info from the DOMdocument     MSXML::IXMLDOMDocumentPtr pXMLDoc(config);     // Read listof stock symbols to get data for, put into a collection    MSXML::IXMLDOMNodeListPtr pNodeList = pXMLDoc->selectNodes(”/        stocks/symbols”);     if (pNodeList)     {         for(intlcv=0; lcv<pNodeList->length; lcv++)         {                MSXML::IXMLDOMNodePtr pNode = pNodeList->item[lcv];                _bstr_t symbol = pNode->text;                m_pCollection->AddItem(_variant_t(symbol);             }        }     };     //Implementation of the ISequoiaAgent interface    STDMETHODIMP CMyAgent::Process(IDispatch * Context, VARIANT_BOOL *    bResult)     {         _bstr_t strResult(“”)         //Create theoutput of the CDA         strresult += “<SCRIPT language=“JavaScript”>”        strresult += strresult & “function submitForm( ){”        strresult = strresult & “if (ValidateSymbolPresence( )){”        strresult = strresult & “document.frmQuote.submit( );”        strresult = strresult & “return true;}”         strresult =strresult & “else{”         strresult = strresult & “return false;”        strresult = strresult & “}”         strresult = strresult & “}”        strresult = strresult & “function ValidateSymbolPresence( )”        strresult = strresult & “{”         strresult = strresult & “varOK = true;”         strresult = strresult & “if(document.frmQuote.Symbol.value == ”)”         strresult = strresult &“{”         strresult = strresult & “alert(‘Please enter a symbol...’);”        strresult = strresult & “OK = false;”         strresult =strresult & “document.frmQuote.Symbol.focus( );”         strresult =strresult & “} return(OK);”         strresult = strresult & “}”        strresult = strresult & “</SCRIPT>”         strresult =strresult & “<FORM action=”“http://host.cnbc.com/        jetson/Symbol_Go_Box.html”“ target=”“_new”“ method=”“post”“        name=”“frmQuote”“ onSubmit=”“return ValidateSymbolPresence()”“>”         strresult = strresult & “<TABLE>”         strresult =strresult & “<TR>”         strresult = strresult & “<TD>”        strresult = strresult & “<AHREF=”“http://www.cnbc.com/home.html”“         target=”“_blank”“><IMGSRC=”“images/cnbc4.GIF”“ width=”“151”“         height=”“71”“border=”“0”“></A></TD>”         strresult = strresult & “<TDvalign=middle>QUOTE BOX</TD></TR></         TABLE>”         strre sult =strresult & “Enter company name or symbol(s):<BR>”         strresult =strresult & “<INPUT size=”“30”“ name=Symbol         value=”“”“>”        strresult = strresult & “&nbsp;&nbsp;<A HREF=”“#”“        onClick=”“submitForm( )”“>Go</a>”         strresult = strresult& “</FORM>”         // extract the Response object from the context        CONTEXTLib::ISequoiaContextPtr pContext(Context);        CONTEXTLib::ISequoiaResponsePtr pResponse(pContext->Response);        // Write the result to the Response object        pResponse->Write(strResult);         *bResult = VARIANT_TRUE;        return S_OK; }

To reduce reprocessing of frequently accessed but infrequently changinginformation, the communications module 200 supports per-user and globalcaching. In one embodiment, per-user caching causes the communicationsmodule 200 to present the same information in response to a request froma user until the lapse of a predetermined time period. In anotherembodiment, the communications module 200 suppresses requests to a CDB204 until the lapse of the predetermined time period.

In an embodiment without caching, the communications module 200 invokesa CDB 204 to check a user's accounts for e-mail upon receipt of each andevery HTTP REFRESH request from a user's web browser, even though e-mailtends to arrive infrequently. In another embodiment, a privileged userenables per-user e-mail caching, setting a timer to check for new e-mailevery 10 minutes. A first request to the communications module 200invokes a CDB 204 to retrieve e-mail headers, presenting thisinformation to the user. Subsequent requests for e-mail data will onlyreturn the information cached by the communications module 200 until 10minutes have passed since the first request.

Global caching operates in a similar fashion, save that thecommunications module 200 maintains one identical copy of data for allusers of the system. Therefore, global caching is ideally suited forapplications such as company newsletters, news headlines, and local timeand weather information.

In one embodiment, all communications to and from the communicationsmodule 200 take the form of messages using a platform independentextendible markup language such as XML. However, most client devices 100such as web browsers or wireless-aware cell phones do not directlysupport XML. In one embodiment, a bridging mechanism converts an HTTPrequest into an XML request. In one embodiment, this functionality isprovided by a specialized DLL that translates between the two types ofrequests. In another embodiment, this functionality is provided by anactive server page (ASP), permitting a designer to modify the XMLmessages sent to the communications module 200 or the HTTP responses andcookies sent to the client device 100. In another embodiment, a secondDLL provides functionality to transfer binary files as MultipurposeInternet Mail Extensions (MIME) encoded files.

The following is an exemplary XML message translated by the translationfunctionality from an HTTP request and sent to PS 216:             <cds>                <sequoia>                     <app.server>                        <configspace>seqportal</configspace>                        <sessionid>A8E206DA-73A2-11D4-BA33-0050DA306FA2</sessionid>                     </app.server>                </sequoia>            <messageid>20000817170906</messageid>            <routeinfo>                 <sent/>                <expire/>                 <to/>             <from/>            </routeinfo>             <attachments/>             <body>                <sequoia.request hostname=“h_rose” type=“HTML”>                    <data name=“clientcertificate”/>                    <data name=“form”>                         <itemkey=“SUBMIT”>Search</item>                         <itemkey=“empName”>Hannah Rose</item>                     </data>                    <data name=“querystring”>                        <item key=“page”>home</item>                        <item key=“cdaid”>{A5DBC0E4-0F42-11D4-                           8FF1-0050DA2FEE7E}|Search Employee</item>                        <item key=“action”>doSearch</item>                    </data>                     <dataname=“servervariables”>                         <itemkey=“ALL_HTTP”>HTTP_ACCEPT:*/*                            HTTP_ACCEPT_LANGUAGE:en-us                            HTTP_CONNECTION:Keep-Alive                            HTTP_HOST:h_rose                            HTTP_REFERER:http://h_rose/seqportal/cds/        host.asp?page=home&amp;cdaid={A5DBC0E4-0F42-                                11D4-8FF1-0050DA2FEE7E}|                                Search Employee&amp;action=default                                HTTP_USER_AGENT:Mozilla/4.0 (compatible;                                MSIE 5.01; Windows NT)        HTTP_COOKIE:h%5Frose%5Fseqportal%5Fcds%        5FSession%5FID=A8E206DA%2D73A2%2D11D4%                                2DBA33%2D0050DA306FA2                            HTTP_CONTENT_LENGTH:26                            HTTP_CONTENT_TYPE:application/x-www-form-urlencoded                             HTTP_ACCEPT_ENCODING:gzip,deflate                         </item>                         <itemkey=“ALL_RAW”>Accept: */*                             Accept-Language:en-us                             Connection: Keep-Alive                            Host: h_rose                            Referer: http://h_rose/seqportal/cds/                            host.asp?page=home&amp;cdaid={A5DBC0E4-0F42-11D4-                             8FF1-0050DA2FEE7E}|SearchEmployee&amp;                             action=default User-Agent:Mozilla/4.0                             (compatible; MSIE 5.01; WindowsNT)                             Cookie: h%5Frose%5Fseqportal%5Fcds%                            5FSession%5FID=A8E206DA%2D73A2%                            2D11D4%2DBA33%2D0050DA306FA2                            Content-Length: 26                            Content-Type:application/x-www-form-urlencoded                            Accept-Encoding: gzip, deflate</item>                        <item key=“APPL_MD_PATH”>/LM/W3svc/1/root                            /SeqPortal</item>                        <item key=“APPL_PHYSICAL_PATH”>                            C:\Inetpub\wwwroot\SeqPortal\</item>                        <item key=“AUTH_PASSWORD”></item>                        <item key=“AUTH_TYPE”></item>                        <item key=“AUTH_USER”></item>                        <item key=“CERT_COOKIE”></item>                        <item key=“CERT_FLAGS”></item>                        <item key=“CERT_ISSUER”></item>                        <item key=“CERT_KEYSIZE”></item>                        <item key=“CERT_SECRETKEYSIZE”></item>                        <item key=“CERT_SERIALNUMBER”></item>                        <item key=“CERT_SERVER_ISSUER”></item>                        <item key=“CERT_SERVER_SUBJECT”></item>                        <item key=“CERT_SUBJECT”></item>                        <item key=“CONTENT_LENGTH”>26</item>                        <item key=“CONTENT_TYPE”>application/x-www-form-urlencoded</item>                         <itemkey=“GATEWAY_INTERFACE”>CGI/1.1</item>                         <itemkey=“HTTPS”>off</item>                         <itemkey=“HTTPS_KEYSIZE”></item>                         <itemkey=“HTTPS_SECRETKEYSIZE”></item>                         <itemkey=“HTTPS_SERVER_ISSUER”></item>                         <itemkey=“HTTPS_SERVER_SUBJECT”></item>                         <itemkey=“INSTANCE_ID”>1</item>                         <itemkey=“INSTANCE_META_PATH”>/LM/W3SVC/1</item>                        <item key=“LOCAL_ADDR”>255.255.10.10</item>                        <item key=“LOGON_USER”></item>                        <itemkey=“PATH_INFO”>/seqportal/cds/host.asp</item>                        <itemkey=“PATH_TRANSLATED”>C:\Inetpub\wwwroot\SeqPortal\cds\host.asp</item>                        <itemkey=“QUERY_STRING”>page=home&amp;cdaid={A5DBC0E4-0F42-11D4-8FF1-        0050DA2FEE7E}|Search%20Employee&amp;action=doSearch</item>                        <item key=“REMOTE_ADDR”>255.255.10.10</item>                        <item key=“REMOTE_HOST”>255.255.10.10</item>                        <item key=“REMOTE_USER”></item>                        <item key=“REQUEST_METHOD”>POST</item>                        <itemkey=“SCRIPT_NAME”>/seqportal/cds/host.asp</item>                        <item key=“SERVER_NAME”>h_rose</item>                        <item key=“SERVER_PORT”>80</item>                        <item key=“SERVER_PORT_SECURE”>0</item>                        <item key=“SERVER_PROTOCOL”>HTTP/1.1</item>                        <itemkey=“SERVER_SOFTWARE”>Microsoft-IIS/4.0</item>                        <item key=“URL”>/seqportal/cds/host.asp</item>                        <item key=“HTTP_ACCEPT”>*/*</item>                        <item key=“HTTP_ACCEPT_LANGUAGE”>en-us</item>                        <item key=“HTTP_CONNECTION”>Keep-Alive</item>                        <item key=“HTTP_HOST”>h_rose</item>                        <itemkey=“HTTP_REFERER”>http://h_rose/seqportal/cds/host.asp?page=home&amp;                            cdaid={A5DBC0E4-0F42-11D4-8FF1-0050DA2FEE7E}|Search Employee&amp;                            action=default</item>                        <itemkey=“HTTP_USER_AGENT”>Mozilla/4.0(compatible; MSIE 5.01; Windows                            NT)</item>                         <itemkey=“HTTP_COOKIE”>h%5Frose%5Fseqportal%5Fcds        %5FSession%5FID=A8E206DA%2D73A2%2D11D4%                            2DBA33%2D0050DA306FA2</item>                        <item key=“HTTP_CONTENT_LENGTH”>26</item>                        <item key=“HTTP_CONTENT_TYPE”>application/x-www-form-                             urlencoded</item>                        <item key=“HTTP_ACCEPT_ENCODING”>gzip,deflate</item>                         </data>                        <data name=“cookies”/>                    </sequoia.request>                 </body>            </cds>

Note that the individual component fields of the translated messagetypically take the form: <data name=” data_type”> <item key=” key_name”>key_value</item> </data>

where the key value can be any of a form variable, a query string, or aserver variable.

Similarly, the following is an exemplary XML message for transmissionfrom communications module 200 to client device 100: <result>    <number>3</number>    <anchor>http://training15/smartsummary/getContent.asp        ?dsn=xassummaries&amp;provider=MSDASQL.1&amp;        username=sa&amp;password=&amp;        query=select+summary+from+PHONELISTKeys&amp;        FileType=xml&amp;index=2     </anchor>     <anchor.text>        <![CDATA[             http://training15/smartsummary/                getContent.asp?dsn=xassummaries&amp;                provider=MSDASQL.1&amp;username=sa&amp;password=&amp;query=select+summary+from+PHONELISTKeys                &amp;FileType=xml&amp;index=2             ]]>        </anchor.text>         <source.server>Enterprise</source.server>        <summary>             <![CDATA[                 <AHREF=“javascript:showStyledDoc                (&quot;http://training15/smartsummary/                getContent.asp?dsn=xassummaries&amp;                provider=MSDASQL.1&amp;username=sa&amp;password=                &amp;query=select+summary+from+PHONELISTKeys                &amp;FileType=xml&amp;index=2&quot;);”>                Styled Document Goes Here                 </A>                <BR/>                     Customer Service<BR/>                <font color=“#999999”>                 Summary Info GoesHere         ]]>     </summary>     <display.name></display.name>    <relevance></relevance>     <docid></docid> </result>

The translation functionality strips the encapsulating XML tags from themessage and sends the HTML information embedded within the CDATAsection.

The <anchor.text> tag contains a link to a SmartSummary, a particulartype of CDB 204. A SmartSummary CDB 204 presents a user with aconvenient interface for a large, disparate set of data sources byorganizing the data around a common object or entity. In one embodiment,the PS system 216 is deployed in a hospital environment. Physician usersof the system treat patients for various illnesses. An individualpatient is associated with entries in tens of data sources scatteredacross the hospital or managed care group to which the hospital belongs.These sources include, but are not limited to, admitting records,contact and insurance information, transplant reports, radiologyreports, laboratory reports, and transcriptions. The efficiency andquality of treatment would be impaired if the physician was required tospend significant amounts of time to locate the records she needs totreat a patient.

The SmartSummary CDB 204 accepts a patient name from a physician and, inone embodiment, invokes a business flow on IS module 208. The flowlaunches tens of assimilation agents 212 to access all relevantdatabases, returning information concerning the patient to the IS module208. The IS module 208 aggregates this data and sends it to thecommunications module 200 for communication to the physician through herclient device 100. This presents the physician with a singleconfigurable screen displaying all the data associated with a patient.Similar implementations of SmartSummary lend themselves toimplementation in a finanacial context, where it is desirable toaggregate data concerning credit ratings, purchasing power, outstandingdebt, and purchase histories, or in any other context where disparatedata sources are naturally organized around a single person or entity.

In another embodiment, the SmartSummary CDB 204 interfaces with adatabase to retrieve data associated with a person or entity instead oflaunching assimilation agents 212 to gather data. Typically, receiveragents or spider agents (see below) accept patient data from documentscontaining patient data that are submitted to the system. In oneembodiment, the documents are parsed into individual data elements,which are stored in the database. When the user requests a SmartSummary,the SmartSummary CDB 204 is launched and it retrieves the appropriateinformation from the database. In one embodiment, this retrieval isaccomplished using an assimilation agent 214.

CDBs 204 interface with IS module 208, conveying information from it tocommunications module 200 for display to the end user on client device100. If a purely graphical display feature is desired, the CDB 204 maybe configured to interact with a “null” data source. For example, if adesigner wishes to present a tabbed window interface appearance to anend user, the designer provides a first CDB 204 to create a header frameand a footer frame on the display and a second CDB 204 to draw a tabbedwindow interface in the header frame.

In one embodiment, the CDB 204 is a software object with various objectproperties that permit its customization. In one embodiment, the CDB 204includes properties that control whether an end user can personalize theCDB 204, specify a minimum size for the display of content from the CDB204, specify the maximum number of times that a CDB 204 can appear on awebpage, and specify whether the CDB 204 refreshes its content on everypage request.

In some embodiments, the CDB 204 is script-based. The software designerimplements the CDB 204 using VBScript, JScript, Perl, or other scriptinglanguages known to one of ordinary skill in the art. In otherembodiments, a CDB 204 is a component-object model (COM)dynamically-linkable library (DLL) developed using programming toolssuch as VISUAL BASIC STUDIO or VISUAL C++ STUDIO from MicrosoftCorporation of Redmond, Wash. In other embodiments, the CDB 204 takesthe form of other computer-executable software objects known to one ofordinary skill in the art.

The CDB 204 typically supports at least two methods. A first “Configure”method controls the initialization of the CDB 204. A second “Process”method performs whatever transactions or processing the designer wishesthe CDB 204 to perform.

In one embodiment, the software designer uses a set of template files tosimplify the coding of CDB 204. The user edits the template files tosupply code implementing the desired CDB functionality and compiles thecode into a machine-executable program or DLL.

The template files typically include definitions for one or moresoftware sub-objects that a designer may wish to implement in the CDB204. These sub-objects include but are not limited toapplication-specific dictionary sub-objects for the storage of dataspecific to a particular CDB 204, audit trail sub-objects, requestsub-objects to contain the parameters associated with incoming requeststo the CDB 204, response sub-objects for outgoing responses from the CDB204, session sub-objects for the storage of session-specific data,cookie sub-objects for the storage of data for use as cookies on aclient device 100, header sub-objects to permit the communicationsmodule 200 to maximize, minimize, close and refresh a window, usersub-objects to store user-specific settings for communications module200, and personalize sub-objects to store a user's customizable pagesand theme preferences. A designer simply deletes the definitions forsub-objects that the CDB 204 will not utilize.

In some embodiments, PS 216 also includes a set of specialized datasources in data tier 116. One specialized data source is taxonomy. Ataxonomy imposes multiple, arbitrary, hierarchical structures upon anarbitrary data set. Typical taxonomies would include a database ofcustomer records that can be selectively organized by employer, or adatabase of digitally-formatted music that can be selectively organizedby artist, album title, or publisher.

PS Interface with Information Sources

CDBs 204 and conduits 112 provide what is typically referred to as“pull” assimilation agents: they retrieve information from sources inresponse to user actions such as a login, a mouse click, a button press,or another user-driven event. It is also desirable that third-partyinformation providers have a mechanism to supply information to anembodiment of the present invention for display to a user at intervalscontrolled by the information provider, instead of the user of the PS216. This model of information service is typically referred to as a“push” information service. FIG. 3 illustrates how several pushinformation services interact with an embodiment of the presentinvention, permitting third-party information providers to supply thesystem with information at their option.

A receiver agent 300 accepts communications from third-party tradingpartners 304 in a variety of protocols. These protocols include but arenot limited to file transfer protocol (FTP), post-office protocol,version 3 (POP3), common-object model (COM) messaging, and HTTP. Asillustrated, a receiver agent 300 typically includes a module for eachsupported protocol. Some embodiments feature modules that support one ormore protocols, especially when those protocols are substantiallysimilar. In other embodiments, receiver agent 300 takes the form of aset of receiver agents 300′, with each receiver agent 300′ supportingone or more individual protocols. Like the other software components ofthe embodiments of the present invention, receiver agent modules may beimplemented as active server pages, COM DLLs, or executable files usingcommercially-available software development tools, as described above.

Each receiver agent module accepts a message in a given protocol andencapsulates it in a platform-neutral extendible markup language such asXML. This encapsulated message is suited to subsequent asynchronous orsynchronous processing at the option of the designer. If the designerelects asynchronous processing, the receiver agent 300 delivers theencapsulated message to message queue 308 for later processing bymessage processor 312. If the designer elects synchronous processing,the receiver agent 300 transfers the encapsulated message directly tothe receiver agent 300 for COM messaging. In another embodiment, thereceiver agent 300 routes messages directly to the agent server 604, asdiscussed below.

Similar to receiver agents 300, spider agents 316 execute data sourceadapters (DSAs) either on a periodic, scheduled basis or on anaperiodic, as-needed basis. Individual DSAs initiate communications witha remote data source using a particular protocol hard-coded into theDSA. Typical protocols include but are not limited to FTP, HTTP,structured query language (SQL), and open database connectivity (ODBC)protocol. Each DSA encapsulates its retrieved information in aplatform-neutral extensible markup language such as XML before routingit to a queue 308 for later processing by message processor 312.

Exemplary uses of a DSA include: accessing a data source, retrievingdata, retrieving metadata, or maintaining index logs of events relatedto the spidering process. The DSA itself typically includesconfiguration information such as authentication credentials, targetsfor information storage and retrieval (including but not limited topathnames, uniform resource locators (URLs), and IP addresses), and themaximum link depth for traversal of a data source.

In one embodiment, a DSA is a COM DLL, designed and compiled usingcommercially-available tools as described above. In another embodiment,a DSA supports methods included but not limited to a method to returnthe children of a data source, a method to retrieve data from atemporary file, a method to write data to a temporary file, a method toobtain configuration values for the DSA, a method to log the DSA'sdata-gathering activities, and a method to retrieve metadata values.

Sender agents 324 provide the PS 216 with one or more methods tocommunicate with a third party, not necessarily a user of the PS 216,via the third party's communication device. Typically, each sender agent324 is adapted to communicate with a client device 100 using network 104using a particular method or protocol. In one embodiment, PS 216 invokesa sender agent 324 that utilizes simple mail transfer protocol (SMTP) toconvey information to client device 100: PS 216 sends a message andinformation identifying the recipient of the message to the sender agent324. The sender agent 324 opens a connection to network 104 and sendsthe message to the user, where it eventually arrives at the user'sclient device 100. In other embodiments, sender agent 324 initiates atelephone call to the third party and uses a combination ofcomputer-generated speech and speech recognition to deliver informationto the third party. In another embodiment, sender agent 324 sends awireless page to the third party's pager or page-equipped cell phone.

Receiver agents 300, spider agents 316, and sender agents 324 arecharacterized by their extendible, open architectures. As new protocolsare developed for use by a receiver agent 300, spider agent 316, orsender agent 324, a user writes a new protocol module to translate orencapsulate the new protocol in the platform-neutral extendible markuplanguage utilized by the components of PS 216.

The message processor 312 periodically reviews one or more queues 308for messages received from receiver agents 300, spider agents 316, orother sources. In one embodiment, the message processor 312 retrievesany available messages in first-in/first-out (FIFO) order forprocessing. In another embodiment, if a message is available forprocessing, the message processor 312 queries the IS module 208 todetermine whether the IS 208 is busy, backlogged, or idle. If the ISmodule 208 is idle, the message processor 312 removes a message from thequeue 308 and sends it to the IS module 208 for processing.

Business Flow Processing

Referring to FIG. 2, the IS module 208 interacts with informationsources in data tier 116 through assimilation agents (AAs) 212. In oneembodiment, IS module 208 includes a flow designer that permits adesigner to graphically implement complex processes conditionallyprocessing and routing information between AAs 212 and CDBs 204. Thesegraphically-depicted processes are referred to as “business flows,”because they typically model a real world decision-making or businessprocess.

In one embodiment, business flows control the transmission and receiptof information among AAs 212, CDBs 204, and communications module 200 byperforming actions and evaluating conditional statements. A samplebusiness flow could respond to a user's invocation of a search CDB 204by searching the user's Outlook's contacts, querying an LDAP server,posting a form to the ANYWHO webserver provided by AT&T Corporation ofNew York, N.Y., and querying an X.500 database, ending the chain ofevents prematurely if any one of the individual queries yielded thedesired result.

In one embodiment, the tool used to create a business flow is a WYSIWIG(“what-you-see-is-what-you-get”) object-oriented drawing tool such asVISIO from Microsoft Corporation of Redmond, Wash. In anotherembodiment, the flow designer is a specialized WYSIWIG object-orienteddrawing tool that converts the designer's drawings into a series ofconditional statements suited to automated execution.

In one embodiment, ovals in the flow signify starts and stops in theprocess. In another embodiment, diamonds in the flow signify conditionaltests, whose satisfaction or failure changes which steps aresubsequently executed. In yet another embodiment, straight lines areimplemented as conditional tests whose condition is always satisfied.

In one embodiment, a user connects to the XP system 216, authenticatesher identity, receives a rendered webpage composed of the results fromher associated CDBs 204, and interacts with content on the webpage byentering information into a dialog box and clicking a button. Adispatcher instantiates the IS module 208 to receive the enteredinformation passed from the user through another CDB 204′.

The IS module 208 loads a predetermined business flow from a file, adatabase or other persistent storage. In one embodiment, the businessflow is associated with the individual user. In another embodiment, thebusiness flow is associated with the user's group, position, or anothertaxonometric characteristic, such as her purchasing privileges. Inanother embodiment, the IS module 208 selects a flow or script from agroup of flows or scripts in response to metadata or other informationcontained in the information received from CDB 204.

With the business flow loaded, IS module 208 executes the flowsequentially from start to finish, taking actions and evaluatingconditional statements that may affect actions subsequently performed.The IS module 208 retrieves and processes information from messageprocessor 312 and one or more of the AAs 212 on an as-needed,step-by-step basis. IS module 208 provides the processed information toCDB 204 for display on client device 100 or, when appropriate, to senderagent 324 for delivery to another individual.

Assimilation agents (AAs) 212 are similar to receiver agents, spideragents, and sender agents in that they provide a designer withconvenient mechanisms to interface IS module 208 with variousinformation sources. For example, a user can add the equivalent of asender agent using FTP protocol by creating an AA 212 to launch an FTPclient program, connect with an FTP site, supply an authorized logoncredential, and then upload information to the site using FTP. However,AAs 212 typically provide advanced processing functionality, forexample, filtering or otherwise preprocessing information before itsreceipt by IS module 208.

In one embodiment, AAs 212 provide bidirectional communication with theinformation sources they interface with. The AA 212 not only retrievesinformation from the information source, it also receives informationfrom the IS module 208 or end user and applies it to the informationsource, modifying or updating the information source.

In one embodiment, AAs 212 are script-based. In another embodiment, AAs212 are component-object model (COM) objects, such as COMdynamically-linked libraries (DLLs) or executable files. In oneembodiment, an AA 212 object supports at least two methods: a firstmethod to initialize the AA 212 and a second method to perform whateverprocessing the designer wants the AA 212 to perform. The output of an AA212 is typically encapsulated in a platform-independent, extendiblemarkup language such as XML.

AAs 212 can be created and deployed using a variety of software tools.In some embodiments, an object designer uses VISUAL BASIC STUDIO orVISUAL C++ STUDIO from Microsoft Corporation of Redmond, Wash. A userspecifies a name and a threading model (e.g., single-threaded,“apartment”-threaded, etc.) for the AA 212. The programming systemprovides a series of template files configured to match the specifiedname and threading model. The user edits the template files to supplycode implementing the desired AA functionality and compiles the codeinto a machine-executable program or DLL. The user may also add labelsor icons for use in IS module 208, or other snap-in extensions.

Typically, template files include definitions for one or more softwaresub-objects that a user may wish to implement in an AA 212. Thesesub-objects include but are not limited to application-specificdictionary sub-objects for the storage of data specific to a particularAA 212, audit trail sub-objects, message sub-objects for outgoingmessages sent by the AA 212 to a clipboard memory, request sub-objectsto contain the parameters associated with incoming requests to the AA212, response sub-objects for outgoing responses from the AA 212, andsession sub-objects for the storage of session-specific data. A designersimply deletes the definitions for sub-objects that the AA 212 will notutilize.

Code for an illustrative AA 212 that checks a document into a repositoryfollows:         <%             Option Explicit             ‘-----Variable Declarations -----’             Dim objServer             DimoInterchange, oStatus             Dim sDocType, sRepServer, sFileLoc,sFileName             Dim sUserID, sAction, sTitle, IFound            Dim sQuery, sDocId             Dim metadata, element            Dim pDOM, newDoc             On Error Resume Next            ‘----- Begin Code ------’             Set pDOM =Request.DOMDocument             Set objServer =CreateObject(“Sequoia.HTMLServer.1”)             With objServer                sAction =UCase(.HTMLDecode(pDOM.SelectSingleNode(“/hyperpublish_original/action”).text))                sDocType =.HTMLDecode(pDOM.SelectSingleNode(“/hyperpublish_original/metadata[@fieldname=‘DOC_TYPE’]”).text)                sRepServer =.HTMLDecode(pDOM.SelectSingleNode(“/hyperpublish_original/reposerver”).text)                sFileLoc =.HTMLDecode(pDOM.SelectSingleNode(“/hyperpublish_original/fileloc”).text)                sFileName = Right(sFileLoc, Len(sFileLoc) −InStrRev(sFileLoc, “\”))                 sUserID =.HTMLDecode(pDOM.SelectSingleNode(“/hyperpublish_original/userid”).text)            End With             If (sAction = “CHECKIN” Or sAction =“METASAVE”) Then                 Set oInterchange =CreateObject(“Sequoia.InterchangeServer.1”)                 If Not(oInterchange Is Nothing) Then                     Set oStatus =oInterchange.Connect(sRepServer)                     IfoStatus.StatusNumber <> 0 Then                         Response.Write“Unable to connect to repository.”                     End If                Else                     Response.Write “Unable toinstantiate repository.”                 End If             End If            If oStatus.StatusNumber = 0 Then                 If (sAction= “CHECKIN”) Then                     With oInterchange                        .user = UCase(sUserID)                        .CreateDoc sDocType, newDoc                    End With                     newDoc.localFileName =sFileLoc                     Set metadata =pDOM.getElementsByTagName(“metadata”)                     For Eachelement In metadata                      With element                        ‘If no title is provided, use the originalfilename’                         IfUCase(.attributes.getNamedItem(“fieldname”).text) = “TITLE” Then                            If Trim(.text) = “” Then.text = sFileName                            sTitle = .text                         EndIf                         newDoc.SetIndexFieldValue.attributes.getNamedItem(“fieldname”).text, .text                     End With                     Next                    ‘set OFN index field & check in’                    With newdoc                        .setindexfieldvalue “OFN”, sFileName                        .AutoDelete = false                         SetoStatus = .CheckIn                     End With                     IfoStatus.statusNumber <> 0 Then                         Response.Write“Unable to check in document.” &_(—)                             “Pleasemake sure index field values and the document filename do not includeampersand characters.”                     Else                        newDoc.Refresh                         ‘AppendTitle and DocID to original message’                         With pDOM        .documentelement.appendChild(pDOM.createElement(“docid”))        .SelectSingleNode(“/hyperpublish_original/docid”).text = sTitle& “∥” & newDoc.DocID                         End With                    End If                     Set newDoc = Nothing                    Call oInterchange.Disconnect                 End If            End If             Set objServer = Nothing             SetoStatus = Nothing             Set newdoc = Nothing             SetoInterchange = Nothing             Set element = Nothing             Setmetadata = Nothing             Set pDOM = Nothing             ‘Check ifan error occurred - if so, replace original message with a dummy errormessage.’             ‘The dummy message will force the followingdecision point to route to a dummy error script,’             ‘causingflow execution to stop.’             ‘(Definition) An error has occurredif there is text on the response buffer.’             IfTrim(Response.Read) <> “” Then pDOM.loadXML(“<error>Source:RepositoryCheckIn Script</error>”)         %>

Sample Display on Client Device

FIG. 4 illustrates a sample display presented on a client device to anend user interacting with one embodiment of the present invention. Thisdiscussion is meant to illustrate the operation of one embodiment of thepresent invention, not to limit the scope of the invention as claimed.

User Jen Spiegel, an employee of the Human Resources department, hascompleted the authentication process with the security broker asdescribed above. Her personalized set of CDBs has been invoked, and theresults aggregated by communications module for presentation to the webbrowser on her desktop computer.

The user has personally selected some of her CDBs, such as the “SportsScores” CDB, whose output appears at 400. Other CDBs are automaticallyavailable to all employees, such as the “Weather” CDB, whose outputappears at 404. Still other CDBs, such as the “Mail” CDB (whose outputappears at 408) are available to the user by virtue of her membership inthe group of users “Human Resources.”

A CDB has drawn the tabbed window interface 412 at the top of thefigure. Using these tabs, the user can distribute her CDBs amongmultiple windowed views, with the components of each view sharing somecommon taxonometric trait or having a common role appropriate to theinstitution employing the user. Each CDB whose output is visible on the“Home” page has its properties set to permit the user to customize itsappearance. For example, a sub-object in each of the onscreen CDBspermits the user to minimize the appearance of the CDB or edit itssettings, such as its size and layout. The designer, who has selectedthe CDBs that are available to User Spiegel and other users, has enabledper-user and global caching where appropriate. For example, the user's“Mail” CDB is set to per-user caching of 10 minutes, so that the CDBwill only check for e-mail in her accounts on various servers scatteredacross the organization every 10 minutes. Specifying the magnitude ofthe delay, and in some embodiments the start time for measuring thedelay, helps the site administrator balance the load on the POP3 serversthe organization uses to administer mail services. Similarly, globalcaching has been enabled for the “Headlines” CDB (whose output appearsat 416), ensuring that every user of the “Headlines” CDB receives thesame set of news headlines.

It is important to note that the user sees the results of invoking thesoftware objects that are the CDBs, translated into an appropriateformat for her client device. That is, although the user sees the outputof the “Weather” CDB 404, the user does not directly see the “Weather”CDB itself.

Illustrative Deployment of XPS System

FIG. 5 depicts a typical business process modeled in the IS module andinvoked by a user from a CDB with an input form present on the user'swebpage. Again, this discussion is meant to illustrate the operation ofone embodiment of the present invention, not to limit the scope of theinvention as claimed.

A system designer has met with ACME Manufacturing Company, ahypothetical business entity, to discuss the automation of the purchaseorder process. The designer and her team has met with various members ofACME's management team, the accounting department, and employees withresponsibility for ordering supplies.

The system designer has distilled the process for ordering supplies intoa grpahical flowchart presented in FIG. 5. First, an employee withpurchasing responsibility completes a purchase order form, enteringinformation including but not limited to desired items for purchase,desired quantities, quoted prices, and shipping information (Step 500).Through interoffice mail the form is routed to the accountingdepartment, where it arrives two days later (Step 504). The nextmorning, a supervisor in the accounting department reviews the request,calls around to check the availability of her staff, and delegates therequest to a particular employee for processing (Step 508). Two dayslater, the employee processes the request. After completing variousphone calls to verify the necessity of the purchase order, the employeeeither approves or disapproves the purchase order (Step 512). If therequest is disapproved, it is returned to the desk of the employeemaking the purchase order by interoffice mail, arriving some two dayslater (Step 516).

If the purchase order is approved, notification of approval is returnedby interoffice mail to the employee making the purchase order, arrivingsome two days later (Step 520). The employee in accounting routes thepurchase order to another member of the accounting staff to update theaccounting mainframe to reflect the purchase (Step 524). Two days later,when the accounting system is updated, the purchase order is sent to theoffice supply vendor for fulfillment (Step 528).

Having studied this process, the system designer or her peers eitherimplement a new embodiment of the invention or modifies an existingembodiment to provide the desired functionality. The system designercreates a Purchase Order (PO) CDB to provide a web-based purchase orderform. The CDB is made available to individual users and groups withpurchasing responsibilities. The system designer also codes an AA tointeract with the accounting department's legacy mainframe system and asender to send messages using SMTP. Work Queue CDBs are created for theaccounting department and individual users in accounting, permitting theassignment of work to the department as a whole or to individual users,respectively. The system designer uses a WYSIWYG business flow tool tographically implement the business process of FIG. 5, associating eachstep in the figure with an action or a decision.

The director of the Supplies Department connects to the PS system andupdates his personalized webpages, placing the PO CDB next to theconduit that apprises him of the inventory in his warehouse and the CDBforecasts the supplies that his division of the company will use overthe next week, keeping all of these CDBs on a tabbed window titled“Supplies.”

On a daily basis, the department supervisor checks the “Supplies” page.When the forecast CDB indicates that on-hand inventory will be exhaustedin one month's time, the supervisor invokes the PO CDB. The supervisorenters the name of the supply needed, the quantity needed, and the datethe supplies are required. The supervisor clicks a button and the PO CDBgenerates an HTTP request for transmission through the network. Anintermediary DLL intercepts the HTTP request and converts it to an XMLmessage, as described above.

The XML message is routed through the company network until it arrivesat the communications module, where it is sent to the appropriate CDB.The CDB forwards the message to the IS module. The IS module examinesthe metadata contained in the message to determine that the XML messageis a purchase order request. The IS module searches its library ofbusiness processes for the appropriate flow to handle purchase orders,which is the flow the designer has implemented based on FIG. 5.

Having received a purchase order (Step 500′), the IS module sends it tothe Group Work Queue CDB for the accounting department (Step 504′). Atthis point, the IS module pauses its execution of the business flowuntil the purchase order is either accepted or rejected.

Members of the accounting department log in to the PS system andauthenticate themselves. Each member of the accounting department hasaccess to his or her own set of CDBs and the Group Work Queue CDB, whichpermits individual employees in the accounting department to assumeresponsibility for tasks delegated to the department as a whole. In thisexample, an accounting employee interacts with the Group Work Queue CDBand transfers the PO to her Personal Work Queue CDB for processing (Step508′).

The transferred PO joins the other POs pending in the employee'spersonal work queue. The Personal Work Queue CDB graphically depicts theemployee's outstanding assignments in a list. The employee selects eachPO, which in turn invokes another CDB to graphically display theparticulars of the PO alongside an APPROVE button and a DENY button(Step 512′). If the employee fails to approve or deny the PO within twodays, or if the PO remains unassigned in the Group Work Queue CDB formore than a day, the appropriate CDB routes the PO to the Personal WorkQueue for the head of the accounting department.

If the PO is denied, the CDB sends a message back to the IS moduleindicating the PO has been denied. The IS module resumes processing ofthe business flow, following the “DENIED” branch away from Step 512′.The IS module invokes a sender to notify the original employeeresponsible for the purchase order that the PO has been denied (Step516′).

If the PO is approved, the CDB sends a message back to the IS moduleindicating the PO has been approved. The IS module resumes processing ofthe business flow, following the “APPROVED” branch. The IS moduleinvokes a sender to notify the original employee responsible for thepurchase order that the PO has been approved (Step 520′). The fields ofthe e-mail are generated through merging administratively-configuredtext with text from the purchase order. The “To” field is populated bythe value of the PO message Xpath //requestor.email. The “Subject” fieldis always “Your supplies request has been approved.” The “Body” field isgenerated from the following administratively configured text: “Click <ahref={MessageURL}>here</a> for PO#{//PO.Number}.” In some embodiments, asecond sender is invoked to alert the Receiving department of theimpending delivery of supplies.

The IS module invokes a custom AA to update the accounting department'slegacy mainframe system (Step 524′). Once the system is updated, the ISmodule forwards the PO to another sender to convey the PO to theappropriate vendor (Step 528′). The sender waits for an acknowledgementfrom the vendor, which it will forward to the IS module. If the ISmodule does not receive an acknowledgement within 8 hours, the IS modulewill send a message to the Group Work Queue CDB for the informationtechnology department for troubleshooting. If the sender receives arejection from the vendor, the sender forwards the rejection to the ISmodule, which forwards it to the employee originally responsible for thepurchase order.

Deployment of PS in a Load-Balanced Server Environment

As illustrated in FIG. 6, some embodiments of the present invention aredeployed in a multi-server computing environment to improve performanceand the ability to service user transactions. This computing environmenttypically includes one or more web server processes 600, one or moreagent server processes 604, and a state server process 608.

One or more users interact with the system using one or more clientdevices 100. The client devices 100 typically interconnect with theserver computers using network 104 that passes messages encoded in anagreed-upon protocol, as discussed above. The messages sent by clientdevice 100 through network 104 arrive at one or more server computersfor processing. The server computers run one or more computer programsproviding web server functionality, agent server functionality, stateserver functionality, or other functionalities as discussed in greaterdetail below. In the embodiment of FIG. 6, these server processes areweb servers 600 ¹, 600 ², and 600 ^(N); agent servers 604 ¹ and 604^(N); and state server 608. As understood by one of ordinary skill inthe art, these disparate processes can execute concurrently on a singleone-processor computer, multiple one-processor computers, a singlemulti-processor computer, multiple multi-processor computers, or anycombination thereof. Moreover, the embodiment of FIG. 6 only depictsthree web server processes, two agent server processes, and a singlestate server process to facilitate discussion. Embodiments of theclaimed invention can assume configurations including any number ofprocesses and any number of server computers. Therefore, this discussionshould not be presumed to limit the scope of the claimed invention.

As FIG. 6 indicates, in one embodiment the various server processes haveeffectively bidirectional channels of communication permitting thepassage of information between processes. The particular form of thesechannels will vary depending on the underlying hardware configurationexecuting the server processes. For example, if the server processesoperate on a network of single-processor machines interconnected by aLAN, the channels can be packets transmitted in accord with Ethernet orToken Ring protocols. In another embodiment, only a subset of serverprocesses include bidirectional channels of communications.

In one embodiment, each server process includes a load-balancing modulewith functionality to monitor the status of its own server process. Inanother embodiment, only a subset of the server processes include aload-balancing module. In one embodiment, the module determines whetherits server process is operating on a transaction, has a backlog oftransactions, or is presently idle. In another embodiment, theload-balancing module includes functionality to share its status withother load-balancing modules and functionality to query otherload-balancing modules concerning their status.

In one embodiment, the messages passed through the network 104 aredirected by a router to one or more computers running one or more webserver processes 600. In another embodiment, the router first queriesthe web server processes 600 to identify the least-busy process beforeit routes the message, typically a HTTP GET request. After theleast-busy web server process 600 has been identified, the message isrouted to it.

The web server 600 parses the HTTP request and services it. In oneembodiment, the load balancing module of web server 600 queries eachagent server 604 to identify the least-busy agent server 604. The webserver 600 passes the request to the least-busy agent server forservicing. In another embodiment, any agent server 604 may force anelection at any time by broadcasting a request election datagram to allother agent servers 604. The election results are determined by acomparison of the set of election criteria which is transmitted withinthe request election datagram transmitted by the requesting agent server604 with the set of election criteria maintained by each receiving agentserver 604′. That is, the first election criterion from the datagram ofthe requesting agent server 604 is compared by the receiving node to thefirst criterion of the receiving agent server 604′. The highest rankingof the two criteria being compared wins the comparison and the agentserver with that criterion wins the election. If the two criteria tie,then the next criteria are sequentially compared until the tie isbroken. If server agent 604′ receiving the request election datagram hasa higher election criteria than that received in the request electiondatagram, the agent server 604′ receiving the request election datagramissues its own request election datagram. If the receiving agent server604′ has a lower election criteria than the criteria received in therequest election datagram, the receiving agent server 604′ determines itis not the master agent server and attempts to determine which agentserver 604 is the master agent server 604.

In one embodiment the criteria which determine the outcome of theelection include: whether or not the agent server 604 is staticallyconfigured as a master network information server node; whether theagent server 604 has the higher software version number; and whether theagent server 604 is the longest running agent server 604. In oneembodiment, the datagram structure for the election request includes anunsigned shortword for the agent server software version number, anunsigned shortword in which the bits are flags which designate whetherthe node is statically configured as a master agent server 604 and anunsigned longword containing the amount of time the agent server 604 hasbeen running.

Periodically, the master agent server 604 may transmit a declare messageto the other agent servers 604 declaring itself to be the master agentserver 604. If another agent server believes itself to be a master agentserver 604, the other agent server will request an election. In this wayerroneous master agent servers 604 are detected and removed. In additionan election may also be requested: by any agent server 604 when thatagent server 604 is instantiated or by any agent server 604 to whom themaster agent server 604 has failed to acknowledge an update message.After an election has occurred and the new master agent server 604 hasbeen determined, all the agent servers 604 wait a random period of timeand then send a datagram to the master agent server 604 with its latestload information. When master agent server 604 receives an updatedatagram from a server agent, then the master agent server 604 may replyto the transmitting agent server with an acknowledgment. If the masteragent server 604 fails to receive data from an agent server 604, thenthe master agent server 604 discards the old data from the agent server604 after a predetermined amount of time.

If an agent server node does not receive an acknowledgment from themaster agent server 604 after the agent server 604 has sent an updatedatagram, the agent server 604 retransmits the update datagram. Theagent server 604 will attempt N retransmits (in one embodiment) beforeit assumes that the master agent server 604 has failed. When this occursthe agent server 604 transmits an election request. If the agent server604 receives an acknowledgment, then it periodically updates the masteragent server 604, in one embodiment every 5 to 60 minutes.

The agent server 604 typically includes a software dispatcher processcapable of allocating memory, freeing memory, and instantiating andterminating software processes in allocated memory. The agent server 604instantiates the software system of FIG. 2, including communicationsmodule 200, CDBs 204, IS module 208, and AAs 212.

The agent server 604 uses the state server 608 for the storage ofpersistent data values and information associated with requests sent tothe web server 600. In one embodiment, the state server 608 includes arelational database for storing this information. Using state server 608for the storage of information associated with ongoing requests permitsload balancing with transactional granularity among agent servers 604.For example, if client device 100 sends multiple HTTP GET requests tothe system of the present invention, each GET request can be translatedinto an XML message and routed by the web server process 600 to adifferent agent server 604. In one embodiment, each agent server 604processes an isolated request as part of a related transaction bystoring and retrieving information related to the transaction in stateserver 608.

In another embodiment, load balancing between agent servers 604 isimplemented at the session level. When a user connects with the system,the least busy agent server 604 is identified. This least-busy agentserver 604 is assigned to the user for the duration of her session: allof the user CDB's and other software processes are executed by thatagent server. If the user ends her connection and reconnects lately, itis possible that a different agent server 604 will process hertransactions.

After agent server 604 instantiates the components of the portal server(PS) system, the instantiated components, the web server 600, the agentserver 604, and the state server 608 intercommunicate using messages ina platform-independent extendible markup language such as XML. Uponreceiving a request from the end user's client device 100, the webserver 600 typically encapsulates a business object such as a documentin a markup language wrapper and passes it to the agent server 604. Theagent server 604 relays the message to the dispatcher, which in turnrelays it to the communications module for processing. In someembodiments, the dispatcher directly routes messages to IS module or analternate processing engine (not shown). The dispatcher determines thetarget for transmitted messages by instantiating a rule-based processingengine that examines the contents of the message and makes routingdecisions based on its contents. Upon completing service of the request,the agent server 608 proceeds to process the next request it receives.

In the interest of clarity, and not to limit the scope to the inventionas claimed, the following example illustrates load-balancing among theweb servers 600 and the agent servers 604 of FIG. 6. Referring to theexample of FIG. 4, assume that user Jen Spiegel, an employee of theHuman Resources department, has begun the authentication process asdescribed above. The web server 600 ¹, which is hosting the user'ssession, polls agent servers 604 ¹ and 604 ² using a load-balancingmodule to identify the least-busy agent server. Whichever agent serveris less busy is assigned the task of instantiating and running thecommunications module associated with the user's session. When the userbegins the authentication process, the web server 100 ¹ polls agentservers 604 ¹ and 604 ² using a load-balancing module to identify theleast-busy agent server. Whichever agent server is less busy is assignedthe task of instantiating and running the security broker associatedwith the user's session. The process repeats itself for each module ofthe PS system 216 that requires instantiates and processor time. Forexample, when the user's list of conduits and CDBs is loaded, eachconduit or CDB is potentially routed to a different machine to maintainan even load among agent servers 604.

It is possible to balance loads between agent servers 604 by dividingtransactions into individual requests because state server 608 providespersistent storage for the state of the user's session. As each agentserver 604 completes a request, it updates the session record on thestate server 608 to reflect the completion of the transaction. Sessionstorage on the state server 608 also increases the fault tolerance ofthe system, enabling the redeployment of computing tasks between agentservers 604 in the event of a failure of one or more agent servers 604.

Many alterations and modifications may be made by those having ordinaryskill in the art without departing from the spirit and scope of theinvention. Therefore, it must be expressly understood that theillustrated embodiment has been shown only for the purposes of exampleand should not be taken as limiting the invention, which is defined bythe following claims. The following claims are thus to be read as notonly literally including what is set forth by the claims but also toinclude all equivalent elements for performing substantially the samefunction in substantially the same way to obtain substantially the sameresult, even though not identical in other respects to what is shown anddescribed in the above illustrations.

1. Apparatus for the aggregation and display of information on a clientdevice, said apparatus comprising: a communications module deliveringinformation to and receiving information from a client device; anassimilation agent receiving information from at least one informationsource and encapsulating said information in a first wrapper using aplatform-independent extendible markup language; and an integrationserver in communication with said communications module and saidassimilation agent, said integration server receiving said encapsulatedinformation from said assimilation agent, said integration servercomprising a rules engine for processing said encapsulated informationin accord with a predefined set of rules and encapsulating the result ina second wrapper using a platform-independent extendible markuplanguage, and said integration server providing said encapsulated resultto said communications module.
 2. The apparatus of claim 1 wherein saidcommunications module delivers information to and receives informationfrom said client device using one of hypertext markup language (HTML)and wireless markup language (WML).
 3. The apparatus of claim 1 whereinsaid communications module delivers information customized according toa predefined profile.
 4. The apparatus of claim 1 wherein saidcommunications module delivers information customized according to thetype of client device.
 5. The apparatus of claim 1 wherein saidcommunications module, said integration server, and said assimilationagent communicate using extensible markup language (XML).
 6. Theapparatus of claim 1 wherein said assimilation agent retrievesinformation from one of a SQL database, an Oracle database, a Dominodatabase, a document repository, a SAP database, a computer incommunication with the Internet, and an indexed database.
 7. Theapparatus of claim 1 further comprising: a content delivery brokerproviding communications between said communications module and saidintegration server.
 8. The apparatus of claim 7 wherein saidcommunications provided by said content delivery broker utilizeextensible markup language (XML).
 9. The apparatus of claim 1 furthercomprising: a receiver agent in communication with said integrationserver and receiving messages sent in a protocol.
 10. The apparatus ofclaim 9 wherein said protocol is one of file transfer protocol (FTP),post office protocol, version 3 (POP3), hypertext transfer protocol(HTTP), Microsoft Message Queue protocol (MSMQ), simple mail transferprotocol (SMTP), Directory Polling, and component-object model messages(COM).
 11. The apparatus of claim 1 further comprising: a spider agentin communication with said integration server and initiatingcommunications with a data source using a protocol.
 12. The apparatus ofclaim 11 wherein said protocol is one of FTP, POP3, HTTP, MSMQ, SMTP,Directory Polling, and COM.
 13. The apparatus of claim 1 furthercomprising: a sender agent in communication with said integration serverand sending messages using a protocol.
 14. The apparatus of claim 14wherein said protocol is one of FTP, POP3, HTTP, MSMQ, SMTP, DirectoryPolling, and COM.
 15. A method for aggregating information from multiplesources for presentation to a user, said method comprising the steps:(a) receiving, by an assimilation agent, information from at least oneof a plurality of information sources; (b) encapsulating, by theassimilation agent, said received information in a first wrapper using aplatform-independent extensible markup language; (c) transmitting, bythe assimilation agent, said encapsulated information to an integrationserver; (d) processing, by the integration server, said encapsulatedinformation in accord with a predefined set of rules; (e) encapsulating,by the integration server, the processed information in a second wrapperusing a platform-independent extensible markup language; (f)transmitting, by the integration server, the processed information to acommunications module; and (g) delivering, by the communications module,said processed information to a client device.
 16. The method of claim15 wherein step (g) comprises the steps: (g-a) identifying at least oneof the type of client device or the type of said processed information.17. The method of claim 16 wherein step (g) further comprises the steps:(g-b) selecting an XML style sheet based on the result of step (g-a);and (g-c) completing said XML style sheet with said processedinformation.
 18. The method of claim 17 wherein step (g) furthercomprises the step: (g-d) transforming the result of step (g-c) to aform suitable for display on said client device; and (g-e) providing theresult of step (g-d) to said client device.
 19. An article ofmanufacture having computer-readable program means embodied therein foraggregating information from multiple sources for presentation to auser, said article comprising: computer-readable program means forreceiving, by an assimilation agent, information from at least one of aplurality of information sources; computer-readable program means forencapsulating, by the assimilation agent, said received information in afirst wrapper using a platform-independent extensible markup language;computer-readable program means for transmitting, by the assimilationagent, said encapsulated information to an integration server;computer-readable program means for processing, by the integrationserver, said encapsulated information in accord with a predefined set ofrules; computer-readable program means for encapsulating, by theintegration server, the processed information in a second wrapper usinga platform-independent extensible markup language; computer-readableprogram means for transmitting, by the integration server, the processedinformation to a communications module; and computer-readable programmeans for delivering, by the communications module, said processedinformation to a client device.
 20. The article of manufacture of claim19 wherein said computer-readable program means for delivering, by thecommunications module, said processed information to a client devicecomprises: computer-readable program means for identifying at least oneof the type of client device or the type of said processed information.21. The article of manufacture of claim 20 wherein saidcomputer-readable program means for delivering, by the communicationsmodule, said processed information to a client device further comprises:computer-readable program means for selecting an XML style sheet basedon said at least one of the type of client device and the type of saidprocessed information; and computer-readable program means forcompleting said XML style sheet with said processed information.
 22. Thearticle of manufacture of claim 21 wherein said computer-readableprogram means for delivering, by the communications module, saidprocessed information to a client device further comprises:computer-readable program means for transforming said completed XMLstyle sheet to a form suitable for display on said client device; andcomputer-readable program means for providing said transformed stylesheet suitable for display on said client device to said client device.